/**
 * 接受已有json，和包含预删除属性的数组
 * @param {json} jsonObj
 * @param {Array} propertiesToRemove  
 * @returns {json} 经过剔除之后的json
 */

export function removeJsonProperties(jsonObj,propertiesToRemove) {
    // 检查输入是否有效
    if (typeof jsonObj !== 'object' || jsonObj === null || !Array.isArray(propertiesToRemove)) {
        throw new Error('无效的输入参数：第一个参数必须是JSON对象，第二个参数必须是数组');
    }

    // 创建原始对象的深拷贝，避免修改原对象
    const newObj = JSON.parse(JSON.stringify(jsonObj));

    // 递归移除属性的辅助函数
    function removeProperties(obj) {
        // 如果不是对象类型，直接返回
        if (typeof obj !== 'object' || obj === null) {
            return;
        }

        // 如果是数组，递归处理每个元素
        if (Array.isArray(obj)) {
            obj.forEach(item => removeProperties(item));
            return;
        }

        // 移除指定的属性
        propertiesToRemove.forEach(prop => {
            if (obj.hasOwnProperty(prop)) {
                delete obj[prop];
            }
        });

        // 递归处理对象的子属性
        Object.values(obj).forEach(value => removeProperties(value));
    }

    // 执行移除操作
    removeProperties(newObj);

    return newObj;
}




